from django.db import models

from mall import settings
from utils.models import BaseModel
from itsdangerous import TimedJSONWebSignatureSerializer as JWS


class OAuthQQUser(BaseModel):
    """
    QQ登录用户数据
    """
    user = models.ForeignKey('users.User', on_delete=models.CASCADE, verbose_name='用户')
    openid = models.CharField(max_length=64, verbose_name='openid', db_index=True)

    class Meta:
        db_table = 'tb_oauth_qq'
        verbose_name = 'QQ登录用户数据'
        verbose_name_plural = verbose_name

    @staticmethod
    def generate_save_user_token(openid):
        jws = JWS(settings.SECRET_KEY, 3600)

        token = jws.dumps({'openid': openid})

        return token.decode()

    @staticmethod
    def check_save_user_token(account):
        jws = JWS(settings.SECRET_KEY, 3600)

        try:
            token = jws.loads(account)
        except Exception:
            return None

        return token.get('openid', None)
